package com.csc.contact.checkbill.service;


import com.csc.contact.checkbill.entity.CheckDiffDataInfo;
import com.csc.contact.checkbill.mapper.CheckDiffDataMapper;
import com.hollycrm.hollybeacons.system.db.mybatis.support.BaseServiceImpl;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * author zhanglei
 * createDate 2019-7-3
 * Description 对账文件异常信息记录
 */

@Service("checkdiffservice")
public class CheckDiffServiceImpl extends BaseServiceImpl<CheckDiffDataMapper, CheckDiffDataInfo> {

    private final static Logger LOGGER = Logger.getLogger(CheckDiffServiceImpl.class);


    /**
     * 保存差异记录信息
     *
     * @param checkDiffDataInfo
     */
    public void saveDiffDataInfo(CheckDiffDataInfo checkDiffDataInfo) {
        try {
            this.baseMapper.saveDiffDataInfo(checkDiffDataInfo);
        } catch (Exception e) {
            LOGGER.info("保存异常记录信息出错====", e);
        }
    }

    /**
     * 更新回执文件头信息状态
     *
     * @param checkDay
     */
    public void updateResultStatus(String checkDay) {
        try {
            this.baseMapper.updateResultStatus(checkDay);
        } catch (Exception e) {
            LOGGER.info("更新回执文件头错误===", e);
        }
    }

    /**
     * 获取异常信息记录中的充值缴费状态不一致的记录进行平账
     *
     * @param checkDay
     * @return
     */
    public List<String> queryDiffChargeStatus(Map checkDay) {
        try {
            return this.baseMapper.queryDiffChargeStatus(checkDay);
        } catch (Exception e) {
            LOGGER.info("更新回执文件头错误===", e);
            return new ArrayList<>();
        }
    }

    /**
     * 获取回执文件头信息
     *
     * @param checkDay
     * @return
     */
    public CheckDiffDataInfo queryDiffTop(String checkDay) {
        try {
            return this.baseMapper.queryDiffTop(checkDay);
        } catch (Exception e) {
            LOGGER.info("获取文件头信息出错====", e);
            return null;
        }
    }

    /**
     * 获取回执文件体信息
     *
     * @param params
     * @return
     */
    public List<CheckDiffDataInfo> queryDiffResultInfo(Map params) {
        try {
            return this.baseMapper.queryDiffResultInfo(params);
        } catch (Exception e) {
            LOGGER.info("获取回执文件体信息出错====", e);
            return new ArrayList<>();
        }
    }

    /**
     * 删除重复异常记录的信息
     *
     * @param serialNo
     */
    public void deleteDiffInfoBySerialNo(String serialNo) {
        try {
            this.baseMapper.deleteDiffInfoBySerialNo(serialNo);
        } catch (Exception e) {
            LOGGER.info("删除重复流水号的异常记录信息出错====", e);
        }

    }

    /**
     * 根据流水号查询异常记录对象
     *
     * @param serialNo
     * @return
     */
    public CheckDiffDataInfo queryDiffInfoBySerialNo(String serialNo) {
        try {
            return this.baseMapper.queryDiffInfoBySerialNo(serialNo);
        } catch (Exception e) {
            LOGGER.info("删除重复流水号的异常记录信息出错====", e);
            return null;
        }
    }

}
